SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spActualizarPlantasFuncionales2]

@turno INT,
@modalidad INT,
@division VARCHAR(7),
@curso VARCHAR(3),
@funcion INT,
@horas INT,
@idplaza INT,
@cargo INT,
@asignatura INT,
@presupuesto INT,
@descripcion VARCHAR(50),
@esgrupo VARCHAR(1),
@alumnos INT,
@op INT,
@PlazaNueva INT,
@FechaAlta varchar(10) 
-- OP = 1 Cuando se modifican los datos de la Division
-- OP <> 1 Cuando se modifica la Referencia de la Division

AS

SET DATEFORMAT dmy

DECLARE @iddivision INT
DECLARE @error INT
DECLARE @suborg INT

BEGIN TRANSACTION


--Primero chequeo si es un cargo NO FRENTE ALUMNO, el curso debe ser 0
IF EXISTS(SELECT * FROM tb_Plazas WHERE IdPlaza = @idplaza AND TipoDeFuncion IN (0,16,17,18,19)) BEGIN
	IF @curso <> '0' BEGIN
		RAISERROR('El curso debe ser 0 SI el cargo es NO FRENTE A ALUMNOS.',16,1)
		SELECT @error = @@error
		GOTO Salir
	END
END

-- Luego me fijo si la division ESGRUPO el curso debe ser G
IF @esgrupo = 'S' BEGIN
	IF @curso <> 'G' BEGIN
		RAISERROR('El curso debe ser G SI la división es UN GRUPO DE DIVISIONES.',16,1)
		SELECT @error = @@error
		GOTO Salir
	END
END

IF @PlazaNueva = 1
BEGIN
	DECLARE @Organizacion INT
	DECLARE @SubOrganizacion INT
	DECLARE @FFechaAlta DATETIME
	DECLARE @Sistema INT
	DECLARE @Financiamiento INT
	DECLARE @Finalidad INT
	DECLARE @TipoDeFuncion INT
	DECLARE @RegimenSalarial INT
	DECLARE @RegimenSuplencias INT
	DECLARE @RegimenDesigna INT
	DECLARE @RegimenLaboral INT
	DECLARE @Temporalidad INT
	DECLARE @CargoSalarialDefault INT
	DECLARE @CUISE INT

	SELECT @idDivision = idDivision FROM tb_Divisiones WHERE GrupoCarreras = @Modalidad AND Curso = @Curso AND Division = @Division AND Turno = @Turno 
	IF @idDivision IS NULL
	BEGIN
		INSERT INTO tb_Divisiones(idsuborg, esgrupo, curso, division, grupocarreras, turno, fechaalta) 
		VALUES(@suborg, @esgrupo, ltrim(rtrim(@curso)), ltrim(rtrim(@division)), @modalidad, @turno, GETDATE())
		SELECT @error = @@error
		IF @Error <> 0 GOTO Salir

		SELECT @iddivision = @@IDENTITY
	END

	SELECT @FFechaAlta = CONVERT(DATETIME, @FechaAlta)

	SELECT @Organizacion = Organizacion,  @SubOrganizacion = SubOrganizacion,  @Sistema = Sistema, @Financiamiento = Financiamiento,
	@Finalidad = Finalidad,  @TipoDeFuncion = TipoDeFuncion, @RegimenSalarial = RegimenSalarial, @RegimenSuplencias = RegimenSuplencias, @RegimenLaboral = RegimenLaboral,
	@RegimenDesigna = RegimenDesigna, @Temporalidad = Temporalidad, @CargoSalarialDefault = CargoSalarialDefault, @Cuise = Cuise
	FROM tb_Plazas WHERE idPlaza = @idPlaza

	INSERT tb_Plazas
	SELECT null, @Organizacion, @SubOrganizacion, @Funcion, @Asignatura, @idDivision, @Turno, @FFechaAlta, 0, @Horas, NULL, 'N', NULL, 
	NULL, NULL, @Sistema, @RegimenLaboral, @Financiamiento, @Presupuesto, @Finalidad, @TipoDeFuncion, @RegimenSalarial, @RegimenSuplencias,
	@RegimenDesigna, @Temporalidad, @CargoSalarialDefault, NULL, NULL, NULL, NULL, NULL, 'N', NULL, @Cuise, NULL, NULL, NULL, NULL 

	SELECT @error = @@error
	IF @Error <> 0 GOTO Salir
END
ELSE
BEGIN
	IF @op = 1 BEGIN
		SELECT @iddivision  = division from tb_Plazas where idplaza = @idplaza

		UPDATE tb_Divisiones SET curso = ltrim(rtrim(@curso)), division = ltrim(rtrim(@division)), turno = @turno, GrupoCarreras = @modalidad, Descripcion = @descripcion, EsGrupo = @esgrupo  WHERE idDivision = @iddivision

		SELECT @error = @@error
		IF @Error <> 0 GOTO Salir
	END
	ELSE BEGIN
		SELECT @suborg = (SELECT Suborganizacion FROM tb_Plazas WHERE IdPlaza = @idplaza)
		IF EXISTS(SELECT * FROM tb_Divisiones WHERE IdSubOrg = @suborg AND Curso = @curso AND Division = @division AND Turno = @turno AND GrupoCarreras=@modalidad) BEGIN
		
			SELECT @iddivision = (SELECT IdDivision FROM tb_Divisiones WHERE IdSubOrg = @suborg AND Curso = @curso AND Division = @division AND Turno = @turno AND GrupoCarreras=@modalidad)
			UPDATE tb_Plazas SET Division = @iddivision WHERE IdPlaza = @idplaza
			SELECT @error = @@error
			IF @Error <> 0 GOTO Salir
		END
		ELSE BEGIN		--Inserta una division con los atributos solicitados
			INSERT INTO tb_Divisiones(idsuborg, esgrupo, curso, division, grupocarreras, turno, fechaalta) 
			VALUES(@suborg, @esgrupo, ltrim(rtrim(@curso)), ltrim(rtrim(@division)), @modalidad, @turno, GETDATE())
			SELECT @error = @@error
			IF @Error <> 0 GOTO Salir
			SELECT @iddivision = @@IDENTITY
			UPDATE tb_Plazas SET Division = @iddivision WHERE IdPlaza = @idplaza
			SELECT @error = @@error
			IF @Error <> 0 GOTO Salir
		END
	END

	IF EXISTS(SELECT * FROM tb_MatriculasDivision WHERE Division = @iddivision) BEGIN
		UPDATE tb_MatriculasDivision SET FechaBaja = GETDATE(), Baja = 'S' WHERE Division = @iddivision AND FechaBaja IS NULL
		SELECT @error = @@error
		IF @Error <> 0 GOTO Salir
	END
	INSERT INTO tb_MatriculasDivision(Division, Matricula, FechaAlta) VALUES(@iddivision, @alumnos, GETDATE())
	SELECT @error = @@error
	IF @Error <> 0 GOTO Salir
	UPDATE tb_Plazas SET FechaAlta = @FechaAlta, Horas = @horas, Funcion = @funcion, Asignatura = @asignatura, CargoSalarialDefault = @cargo, Presupuesto = @presupuesto WHERE idPlaza = @idplaza
	SELECT @error = @@error
	IF @Error <> 0 GOTO Salir

END

Salir:
IF @error = 0
	COMMIT TRANSACTION
ELSE 
	ROLLBACK TRANSACTION


















GO
